<?php
echo "start choice\n";
$word = '';
$GetKeyFlg = FALSE;
$on51 = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむもやゆよらりるれろわがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ";
while ( true ) {
	if ($GetKeyFlg) {
		if (! getKey ( $word )) {
			$sjis_word = mb_convert_encoding ( $word, 'SJIS' );
			echo $sjis_word;
			continue;
		}
	}
	$index = rand ( 0, mb_strlen ( $on51 ) - 1 );
	$word .= mb_substr ( $on51, $index, 1 );
	if (! aj ( $word )) {
		$GetKeyFlg = FALSE;
		continue;
	}
	$sjis_word = mb_convert_encoding ( $word, 'SJIS-win' );
	echo $sjis_word;
	$GetKeyFlg = TRUE;
}
function getKey(&$word) {
	$input = trim ( fgets ( STDIN, 4096 ) );
	switch ($input) {
		case 'c' :
			$word = '';
			return FALSE;
			break;
		case 'b' :
			$word = mb_substr ( $word, 0, mb_strlen ( $word ) - 1 );
			return FALSE;
			break;
	}
	return TRUE;
}
function aj(&$word) {
	if (mb_strlen ( $word ) == 1) {
		switch ($word) {
			case 'ぼ' :
			case 'ひ' :
			case 'け' :
			case 'り' :
			case 'ざ' :
			case 'だ':
				$word = '';
				return FALSE;
				break;
		}
	} else {
		$k = mb_substr ( $word, - 1, 1 );
		if (mb_strpos ( 'あいうえおけひづぺ', $k ) !== FALSE) {
			$word = mb_substr ( $word, 0, mb_strlen ( $word ) - 1 );
			return FALSE;
		}
	}
	if (mb_substr ( $word, 0, 1 ) == 'ぼ') {
		$word = 'ぶ';
	}
	return $word;
}

/* ユニットテストブロック V2 */
if (class_exists ( 'ユニットテストケース' )) {
	class ユニークな名前_test extends ユニットテストケース {
		protected $テストするクラス名 = 'TestClassName';
		// ここがテストケースの記載場所
	}
}